When software is developed, it is not unusual for more time to be spent determining how to implement the software than is spent actually implementing the software. For instance, to develop an application, use cases, objectives, and specific requirements may be determined for one or more distinct platforms. Then, modeling, flowcharts, wireframes, and mock-ups are developed. Mockups can be verified against objectives and platform requirements before implementation finally begins. In the midst of this activity, documentation for the project is developed, which may be a formidable task in and of itself due to last-minute changes in implementation.
Such challenges may be multiplied when a project is intended to develop one application for multiple “targets,” i.e. for multiple different devices, platforms, embedded hardware systems, operating systems, or otherwise for implementation with different enabling applications or execution environments.